From 870648146f69bcd7886b5dbbb25ad80ba1c43f56 Mon Sep 17 00:00:00 2001 From: Stefano Stabellini Date: Mon, 19 Jul 2010 12:20:41 +0100 Subject: [PATCH] Implement "xl tmem-freeable" to match "xm tmem-freeable". Signed-off-by: Dan Magenheimer --- tools/libxl/libxl.c | 14 ++++++++++++++ tools/libxl/libxl.h | 1 + tools/libxl/xl.h | 1 + tools/libxl/xl_cmdimpl.c | 23 +++++++++++++++++++++++ tools/libxl/xl_cmdtable.c | 5 +++++ 5 files changed, 44 insertions(+) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 8d05d6faf7..34d1fc00ca 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -3232,6 +3232,20 @@ int libxl_tmem_shared_auth(struct libxl_ctx *ctx, uint32_t domid, return rc; } +int libxl_tmem_freeable(struct libxl_ctx *ctx) +{ + int rc; + + rc = xc_tmem_control(ctx->xch, -1, TMEMC_QUERY_FREEABLE_MB, -1, 0, 0, 0, 0); + if (rc < 0) { + XL_LOG_ERRNOVAL(ctx, XL_LOG_ERROR, rc, + "Can not get tmem freeable memory"); + return -1; + } + + return rc; +} + int libxl_file_reference_map(struct libxl_ctx *ctx, libxl_file_reference *f) { struct stat st_buf; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 9246383283..9766aff3e8 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -602,6 +602,7 @@ int libxl_tmem_set(struct libxl_ctx *ctx, uint32_t domid, char* name, uint32_t set); int libxl_tmem_shared_auth(struct libxl_ctx *ctx, uint32_t domid, char* uuid, int auth); +int libxl_tmem_freeable(struct libxl_ctx *ctx); typedef struct { char *backend; diff --git a/tools/libxl/xl.h b/tools/libxl/xl.h index df5ce03087..18db408714 100644 --- a/tools/libxl/xl.h +++ b/tools/libxl/xl.h @@ -72,6 +72,7 @@ int main_tmem_destroy(int argc, char **argv); int main_tmem_thaw(int argc, char **argv); int main_tmem_set(int argc, char **argv); int main_tmem_shared_auth(int argc, char **argv); +int main_tmem_freeable(int argc, char **argv); int main_network2attach(int argc, char **argv); int main_network2list(int argc, char **argv); int main_network2detach(int argc, char **argv); diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index e6c2e4bb5d..b5b46cbf26 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -4586,3 +4586,26 @@ int main_tmem_shared_auth(int argc, char **argv) exit(0); } +int main_tmem_freeable(int argc, char **argv) +{ + int opt; + int mb; + + while ((opt = getopt(argc, argv, "h")) != -1) { + switch (opt) { + case 'h': + help("tmem-freeable"); + exit(0); + default: + fprintf(stderr, "option `%c' not supported.\n", opt); + break; + } + } + + mb = libxl_tmem_freeable(&ctx); + if (mb == -1) + exit(-1); + + printf("%d\n", mb); + exit(0); +} diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index 1ec971b54a..d7330fec05 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -295,6 +295,11 @@ struct cmd_spec cmd_table[] = { " (abcdef01-2345-6789-1234-567890abcdef)\n" " -A AUTH 0=auth,1=deauth", }, + { "tmem-freeable", + &main_tmem_freeable, + "Get information about how much freeable memory (MB) is in-use by tmem", + "", + }, { "network2-attach", &main_network2attach, "Create a new version 2 virtual network device", -- 2.30.2